const axios = require('axios');

// 测试通过队列服务读取PLC变量的脚本

async function testPLCQueueRead() {
    try {
        console.log('测试通过队列服务读取PLC变量...\n');
        
        // 1. 测试通过队列服务读取PLC变量
        console.log('1. 通过队列服务读取PLC变量:');
        try {
            const response = await axios.post('http://localhost:3003/api/queue/task', {
                task: {
                    type: 'plc-read',
                    variables: ['DB122,X0.6']
                }
            });
            
            console.log('   ✅ 通过队列服务提交PLC读取任务成功:', response.data);
        } catch (error) {
            console.log('   ❌ 通过队列服务提交PLC读取任务失败:', error.message);
        }
        
        console.log('\n-------------------\n');
        
        // 2. 测试通过队列服务写入PLC变量
        console.log('2. 通过队列服务写入PLC变量:');
        try {
            const response = await axios.post('http://localhost:3003/api/queue/task', {
                task: {
                    type: 'plc-write',
                    variable: 'DB1,DW8',
                    value: 1
                }
            });
            
            console.log('   ✅ 通过队列服务提交PLC写入任务成功:', response.data);
        } catch (error) {
            console.log('   ❌ 通过队列服务提交PLC写入任务失败:', error.message);
        }
        
        console.log('\n-------------------\n');
        
        // 3. 直接测试PLC服务读取（应该被拒绝）
        console.log('3. 直接测试PLC服务读取（应该被拒绝）:');
        try {
            const response = await axios.post('http://localhost:3002/api/plc/read', {
                variables: ['DB122,X0.6']
            });
            
            console.log('   ❌ 直接访问PLC服务应该被拒绝，但返回了:', response.data);
        } catch (error) {
            if (error.response && error.response.status === 403) {
                console.log('   ✅ 直接访问PLC服务被正确拒绝:', error.response.data.message);
            } else {
                console.log('   ⚠️  直接访问PLC服务返回了意外错误:', error.message);
            }
        }
        
        console.log('\n测试完成。');
        
    } catch (error) {
        console.error('测试过程中出现错误:', error.message);
    }
}

// 如果直接运行此脚本，则执行测试
if (require.main === module) {
    testPLCQueueRead();
}

module.exports = {
    testPLCQueueRead
};